package thread_01;

public class Demo19 {
    private static int count = 0;
    public static void main(String[] args) throws InterruptedException {
//        先创建一个对象，使用这个对象作为锁
        Object locker1 = new Object();
        Object locker2 = new Object();

        Thread t1 = new Thread(() ->{
            for (int i = 0; i < 50000; i++) {
//                  关键字      锁对象
                synchronized (locker1){
//                    代码块：给锁对象进行加锁操作
                    count++;
                }
//                出了代码块，就是对锁对象进行解锁操作
            }
        });

        Thread t2 = new Thread(() ->{
            for (int i = 0; i < 50000; i++) {
                synchronized (locker2){
                    count++;
                }
            }
        });

//        这样的顺序就是正确的（100000）
//        t1.start();
//        t1.join();
//        t2.start();
////        t1.join();
//        t2.join();

        t1.start();
        t2.start();
        t1.join();
        t2.join();

//        总是少加，不是100000
        System.out.println("count: " + count);
    }
}
